# 编程软件工具 ```{admonition} 本文引用的文件 :class: note - [docs/docs/zh_CN/board/mPython.rst](../../../products/mpython/board/mPython.rst) - [esp32s3/docs/2_software/1_index.rst](../../../products/mpython-s3/2_software/1_index.rst) - [esp32s3/docs/2_software/1_1_mpython.rst](../../../products/mpython-s3/2_software/1_1_mpython.rst) - `README.md` - `docs/examples/scratch/scratch.py` - `esp32s3/firmware/modules/mpython_ble/application/codexpad.py` - `esp32s3/firmware/examples/mpython_ble/codexpad.md` ``` ## 产品概述 本指南面向使用 mPython 掌控板(ESP32)与 ESP32-S3 系列产品的学习者与教师,聚焦三款编程软件的定位、功能差异与上手路径:mPython IDE、Labplus 3、Mind+。三者均服务于 K12 创客教育场景,分别覆盖“图形化 + Python 双模式”“Scratch 3.0 入门”“多主控通用平台”的不同需求层次,帮助用户在不同学段与项目中选择合适的工具链。 - mPython IDE:官方推荐,支持硬件编程模式、Python 模式、Jupyter 模式;可离线使用;支持 hex/python/blockly 代码读写与云端项目存取、代码库扩展等。 - Labplus 3:基于 Scratch 3.0,适合小学阶段入门,通过积木式编程快速体验传感器、显示、音乐等能力。 - Mind+:国产青少年编程软件,具备多主控板通用能力,并集成 AI/IoT 生态,便于跨设备复用项目。 **章节来源** - `README.md:105-112` - [esp32s3/docs/2_software/1_1_mpython.rst:1-27](../../../products/mpython-s3/2_software/1_1_mpython.rst) - [docs/docs/zh_CN/board/mPython.rst:1-4](../../../products/mpython/board/mPython.rst) ## 核心业务流程 下图展示从“选择编程软件”到“在设备上运行程序”的通用流程,以及三类软件与底层固件的协作关系。 ```text graph TB A["用户选择编程软件"] --> B{"目标设备"} B --> |ESP32 掌控板| C["mPython IDE / Labplus 3 / Mind+"] B --> |ESP32-S3 掌控板3.0/乐动版| D["mPython IDE / VSCode / Mind+"] C --> E["生成或导入代码
hex/python/blocks"] D --> E E --> F["通过 USB/串口烧录或在线编辑"] F --> G["设备运行 MicroPython 固件"] G --> H["调用 mpython 模块/内置模块
驱动外设显示/音频/传感器/网络"] ``` **图示来源** - [esp32s3/docs/2_software/1_index.rst:1-11](../../../products/mpython-s3/2_software/1_index.rst) - [esp32s3/docs/2_software/1_1_mpython.rst:1-27](../../../products/mpython-s3/2_software/1_1_mpython.rst) - `README.md:105-112` **章节来源** - [esp32s3/docs/2_software/1_index.rst:1-11](../../../products/mpython-s3/2_software/1_index.rst) - [esp32s3/docs/2_software/1_1_mpython.rst:1-27](../../../products/mpython-s3/2_software/1_1_mpython.rst) ## 功能模块清单 - mPython IDE - 多种编程模式:硬件编程模式、Python 模式、Jupyter 模式,覆盖小初高不同学习阶段。 - 多格式代码读写:支持 hex、python、blockly 三种代码读写,Blockly 模式下支持函数。 - 离线可用:不依赖网络,可在无网环境安装使用。 - 仿真与云端:提供部分功能的仿真;支持云端存取项目与代码库扩展。 - 适用设备:ESP32 掌控板与 ESP32-S3 产品线均可使用。 - Labplus 3 - 基于 Scratch 3.0 的图形化编程,适合小学入门。 - 通过串口通信与设备交互,示例中可见对触摸按键、RGB、OLED 等的控制。 - 典型用法:将 Scratch 工程与设备固件配合,实现传感器读取与显示反馈。 - Mind+ - 多主控板通用平台,支持 BLE 手柄连接(如 CodexPad),并提供与 MicroPython API 一致的调用习惯。 - 在 ESP32-S3 上可通过蓝牙主机扫描并连接手柄,支持按 MAC 地址或按键组合筛选设备。 - 与固件中的 mpython_ble 应用层协同,提供图形化积木与原生 API 的映射。 **章节来源** - [esp32s3/docs/2_software/1_1_mpython.rst:1-27](../../../products/mpython-s3/2_software/1_1_mpython.rst) - `docs/examples/scratch/scratch.py:49-97` - `esp32s3/firmware/examples/mpython_ble/codexpad.md:64-78` - `esp32s3/firmware/modules/mpython_ble/application/codexpad.py:172-196` ## 数据与状态 - 图形化与代码的转换 - mPython IDE 支持 blockly/python/hex 互转,便于教学与分享。 - Labplus 3 通过串口协议向设备发送指令,设备侧解析后驱动外设(如 RGB、触摸按键)。 - Mind+ 通过 BLE 与外设(如 CodexPad)建立连接,维护连接状态与输入事件流。 - 设备端状态机(以 BLE 手柄为例) - 扫描 → 发现服务 → 订阅通知 → 就绪 → 自动重连(断开时由 poll 维护)。 ```text sequenceDiagram participant U as "用户" participant IDE as "编程软件" participant DEV as "设备(MicroPython)" participant MOD as "mpython_ble/CodexPad" U->>IDE : 选择连接方式(名称/MAC/按键组合) IDE->>DEV : 发起BLE扫描/连接 DEV->>MOD : 初始化并进入扫描状态 MOD-->>DEV : 发现服务/特征 DEV-->>IDE : 返回连接结果与设备信息 IDE->>DEV : 订阅输入事件 loop 主循环 DEV->>MOD : poll() 维护连接与重连 MOD-->>DEV : 按钮/摇杆事件 DEV-->>IDE : 上报实时输入 end ``` **图示来源** - `esp32s3/firmware/modules/mpython_ble/application/codexpad.py:172-236` - `esp32s3/firmware/examples/mpython_ble/codexpad.md:64-78` **章节来源** - [esp32s3/docs/2_software/1_1_mpython.rst:1-27](../../../products/mpython-s3/2_software/1_1_mpython.rst) - `docs/examples/scratch/scratch.py:49-97` - `esp32s3/firmware/modules/mpython_ble/application/codexpad.py:172-236` ## 关键约束与边界 - 设备与软件匹配 - ESP32 掌控板:推荐使用 mPython IDE;也可使用 Labplus 3;Mind+ 可用于 BLE 外设场景。 - ESP32-S3 产品线:可使用 mPython IDE 或 VSCode 进行 Python 开发;Mind+ 用于 BLE 手柄等外设交互。 - 运行时依赖与限制 - mPython IDE:支持离线使用;部分仿真能力有限;云端存取需联网。 - Labplus 3:依赖 Scratch 运行时与设备固件的串口协议一致性。 - Mind+:BLE 连接受限于设备广播名、MAC 稳定性与权限;同一时刻仅一个对象占用 BLE IRQ。 - 安全与资源 - 云端项目存储注意隐私设置;避免在公共环境上传敏感信息。 - BLE 连接需考虑距离与干扰;频繁断连时应检查电量与信号强度。 **章节来源** - [esp32s3/docs/2_software/1_index.rst:1-11](../../../products/mpython-s3/2_software/1_index.rst) - [esp32s3/docs/2_software/1_1_mpython.rst:1-27](../../../products/mpython-s3/2_software/1_1_mpython.rst) - `esp32s3/firmware/examples/mpython_ble/codexpad.md:64-78` - `esp32s3/firmware/modules/mpython_ble/application/codexpad.py:172-236`